package 校招笔试.字节笔试.字23820;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/8/21 21:30
 */
public class Main {

    /*
     https://mp.weixin.qq.com/s/8EaqPbkz3hk2d5PuGZJXUw
     这个状态转移真的抽象

      当 s[i] = s[i + 1] 的时候 , dp[i] = dp[i + 1] + 1 ,这个1  是 当前 i 自己组成的子串
      当s[i] != s[i + 1] 的时候, dp[i] = dp[i + 1] + len - i;  len - i 就是 以当前 i 开头的子符串 有多少个 , 这是一个非常隐蔽的 转移方程式


     */
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        int n =sc.nextInt();
        sc.nextLine(); // 必须 把 换行 给吃掉 才行, 否则 会不正确的
        String s = sc.nextLine();
        int len = s.length(), ans = 0;
        int dp[] = new int[len];
        ans = dp[len - 1] = 1;

        for(int i = len - 2;i >= 0;i--){
            if(s.charAt(i) == s.charAt(i + 1)){
                dp[i] = dp[i + 1] + 1;
            }else{
                dp[i] = dp[i + 1]  + len - i;
            }
            ans += dp[i];
        }
        System.out.println(Arrays.toString(dp));
        System.out.println(ans);
    }







}
